package com.ruoyi.business.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 系统警报信息记录表对象 alarm_info
 *
 * @author qiancheng
 * @date 2025-09-02
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("alarm_info") // 与数据库表名严格对应
public class AlarmInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 自增主键 */
    @TableId(value = "id", type = IdType.ASSIGN_ID) // MyBatis-Plus雪花ID生成策略
    @JsonSerialize(using = ToStringSerializer.class) // 解决Long类型前端精度丢失问题
    private Long id;

    /** 警报等级：1-一般，2-重要，3-严重 */
    @Excel(name = "警报等级", readConverterExp = "1=一般,2=重要,3=严重") // Excel导入导出映射
    @TableField(value = "alarm_level") // 与数据库字段对应
    private Integer alarmLevel;

    /** 警报详细内容 */
    @Excel(name = "警报内容")
    @TableField(value = "alarm_content")
    private String alarmContent;

    /** 警报发生时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // 前端时间格式化
    @Excel(name = "警报时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "alarm_time")
    private Date alarmTime;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @TableField(exist = false)
    private Date endTime;


    /** 所属年份 */
    @Excel(name = "所属年份")
    @TableField(exist = false)
    private Integer belongYear;

}